home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / gemfsc18.lzh / AESSRC18.LZH / AESFUNCS / FRMDESKT.C < prev    next >
C/C++ Source or Header  |  1992-04-06  |  2KB  |  46 lines

  1. /**************************************************************************
  2.  *
  3.  *************************************************************************/
  4.  
  5. #include "gemfast.h"
  6.  
  7. #ifndef NULL
  8.   #define NULL 0L
  9. #endif
  10.  
  11. void  frm_desktop(options, ptree)
  12.     long             options;
  13.     register OBJECT  *ptree;
  14. {
  15.     register OBJECT  *pobj2;
  16.     int               fill;
  17.     int               color;
  18.     long              ob_spec;
  19.  
  20.     wind_update(BEG_UPDATE);
  21.     if ((options & FRM_DTREMOVE) || ptree == NULL) {
  22.         wind_set(0, WF_NEWDESK, NULL, 0, 0);
  23.     } else {
  24.         if (options & FRM_CENTER) {
  25.             rc_copy(&gl_rwdesk, &ptree->ob_x); /* copy desk xywh to tree    */
  26.             if (!(ptree->ob_flags & LASTOB)) { /* if there's another object */
  27.                 pobj2 = ptree + 1;             /* center it on the screen   */
  28.                 pobj2->ob_x = (ptree->ob_width  - pobj2->ob_width)  / 2;
  29.                 pobj2->ob_y = (ptree->ob_height - pobj2->ob_height) / 2;
  30.             }
  31.         }
  32.         apl_vshared();                             /* fill in gl_vwout[]  */
  33.         if (gl_vwout[13] == 2) {                   /* monochrome monitor? */
  34.             ob_spec = ptree->ob_spec;              /* if so, and the      */
  35.             fill  = (ob_spec & 0x00000070L) >> 4;  /* desktop is a solid  */
  36.             color = (ob_spec & 0x0000000FL);       /* color, change it to */
  37.             if (fill == 7 && color > 0) {          /* halftone gray.      */
  38.                 ptree->ob_spec = (ob_spec & 0xFFFFFF00L) | 0x00000041L;
  39.             }
  40.         }
  41.         wind_set(0, WF_NEWDESK, ptree, 0, 0);
  42.     }
  43.     wind_update(END_UPDATE);
  44.     frmx_dial(FMD_FINISH, NULL, &gl_rwdesk);    /* paint the new desktop */
  45. }
  46.